home *** CD-ROM | disk | FTP | other *** search
-
- #include <ctype.h>
- #include <stdio.h>
- #include <string.h>
-
- //
- // a String class with overloaded constructors
- //
- class String
- {
- public:
- String(const char *s)
- {
- len = strlen(s);
- str = strcpy(new char[len + 1], s);
- }
- String(const String &s)
- {
- len = s.len;
- str = strcpy(new char[len + 1], s.str);
- }
- ~String() { delete str; }
- size_t length() { return len; }
- const char *text() { return str; }
- void cat(char c);
- char &sub(size_t i)
- {
- if (i > len)
- /* error */;
- return str[i];
- }
- private:
- size_t len;
- char *str;
- };
-
- void String::cat(char c)
- {
- char *p = strcpy(new char[len + 1], str);
- p[len++] = c;
- p[len] = '\0';
- delete str;
- str = p;
- }
-
- int main()
- {
- size_t i;
- String s1("hello"); // s1 = "hello"
- String s2(s1); // s2 = "hello"
- s2.cat('!'); // s2 = "hello!"
- printf("s1 = %s\n", s1.text());
- printf("s2 = %s\n", s2.text());
- for (i = 0; i < s1.length(); ++i)
- s1.sub(i) = toupper(s1.sub(i));
- // s1 = "HELLO"
- printf("s1 = %s\n", s1.text());
- printf("s2 = %s\n", s2.text());
- return 0;
- }
-
-